Systems and methods for generating a fitness report

ABSTRACT

Systems and methods are provided for processing workout or other fitness data associated with a user and generating scores, reports and/or other analysis based on the processed data. For example, a fitness analysis system may electronically receive workout data indicating performance of a user with respect to each of a number of different workouts completed by the user, where a given workout may include multiple movements. A fitness category may be automatically assigned to a given workout by, for example, analyzing attributes of movements included in the workout. A category-based score may then be generated for the user for each of a number of different fitness categories, and an overall fitness score determined based at least in part on the generated category scores.

CROSS-REFERENCE TO RELATED APPLICATION

Any and all applications for which a foreign or domestic priority claim is identified in the Application Data Sheet as filed with the present application are hereby incorporated by reference under 37 CFR 1.57.

This application claims benefit of U.S. Patent Application No. 61/857,538, filed Jul. 23, 2013, entitled “SYSTEMS AND METHODS FOR GENERATING A FITNESS REPORT,” which is hereby incorporated herein by reference in its entirety.

BACKGROUND

Functional fitness is an increasingly popular style of exercise in the United States. Typically, functional fitness includes a wide variety of movements, workouts, and combinations thereof. In some instances, it combines movements and elements from powerlifting, Olympic weightlifting, track and field, long distance running and climbing, basic gymnastics, calisthenics and/or other fitness areas. Many functional fitness workouts are circuit-style workouts that include combinations of movements from these different disciplines. Individuals often record their performance on these workouts based on total time to completion, total weight lifted, maximum weight lifted, rounds completed in a certain timeframe, and/or other information. Equipment used often includes barbells, dumbbells, kettlebells, rowing machines, weighted sleds, tractor tires for flipping, and/or a large variety of other traditional or non-traditional workout equipment. Due to the variety of workouts from week to week and from gym to gym, there are many different ways to compare performance of different individuals and to analyze an individual's performance.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing aspects and many of the attendant advantages will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:

FIG. 1 depicts a general architecture and operating environment of a fitness analysis system for analyzing fitness data and generating scores and/or reports based on such data.

FIG. 2 is an illustrative user interface generated at least in part by a fitness analysis system that includes a graphical representation of an overall fitness level and category-based fitness scores for a user.

FIG. 3 is an illustrative user interface generated at least in part by a fitness analysis system that enables a user to enter workout information to be analyzed by the fitness analysis system.

FIG. 4 is a flow diagram of an illustrative method implemented at least in part by a fitness analysis system for generating one or more fitness scores for a user.

FIG. 5 is an illustrative user interface generated at least in part by a fitness analysis system that includes graphical indications of a user's fitness strengths and weaknesses determined based on an analysis of fitness data associated with the user.

FIG. 6 is a flow diagram of an illustrative method implemented at least in part by a fitness analysis system for determining a user's fitness strengths and/or weaknesses based on an analysis of fitness data associated with the user.

FIGS. 7 and 8 are illustrative user interfaces generated at least in part by a fitness analysis system that includes fitness score information and indications of potential issues identified with respect to aspects of a user's fitness.

FIG. 9 is an illustrative user interface generated at least in part by a fitness analysis system that includes a graphical representation tracking a user's fitness level over time.

DETAILED DESCRIPTION

Generally described, aspects of the present disclosure relate to systems and methods for determining health and/or fitness of an individual or group of individuals. In some embodiments, one or more fitness level metrics or scores may be generated, which may be associated with supporting measured reports (which may include charts and/or graphs), as discussed herein. For example, a user may enter workout data, such as by entering text and/or numeric data, selecting from selectable options in a user interface, retrieving data from a smart device or fitness tracking device, and/or other data input or submission methods. A fitness analysis system, as described herein, may process the user's workout data and generate various scores and/or reports based at least in part on the workout data. In some embodiments, the fitness analysis system may be configured to categorize new workouts not previously known to the fitness analysis system. For example, a user may enter workout information for a workout that includes a combination of different movements, where the movements are known by the fitness analysis system, but where the fitness analysis system has not previously received data regarding a workout that includes the submitted combination of movements. In some embodiments, the fitness analysis system may determine a category of the workout based at least in part on the types of movements involved in the workout, the duration of each movement or the workout as a whole, the number of repetitions of the movements, the number of rounds of the workout and/or other factors.

Based on the user's workout data for workouts in each of a number of different fitness categories, the fitness analysis system may determine a score for the user for each of a number of different categories. Based at least in part on the determined scores for the different categories, the fitness analysis system may determine an overall fitness score for the user. In some embodiments, the fitness analysis system may use the determined scores and/or other determined information to generate various reports, recommendations and/or analysis regarding the user's fitness and/or workout performance. For example, the fitness analysis system may generate a user interface indicating strengths or weaknesses in the user's fitness (such as indicating a probable abundance or lack of physical strength, endurance, flexibility and/or technique) based on an automated analysis of the user's workout data, optionally in combination with an analysis of workout data received for a large number of different users that have completed the same or different workouts.

FIG. 1 depicts a general architecture and operating environment of a fitness analysis system 100 for analyzing fitness data and generating scores and/or reports based on such data. The illustrated block diagram shows an embodiment in which fitness analysis system 100 is in communication with a network 160 and various systems are also in communication with the network 160. The fitness analysis system 100 may be used to implement systems and methods described herein. For example, the fitness analysis system 100 may be configured to determine fitness levels, generate reports and/or any other functionality described herein. In some embodiments, the system is accessed remotely by the client device 164, the system is local to the client device 164, and/or a combination of the two.

The fitness analysis system 100 includes, for example, a personal computer that is IBM, Macintosh, or Linux/Unix compatible. In one embodiment, the fitness analysis system 100 comprises a server, a desktop computer, a laptop computer, a tablet computer, a mobile phone, a personal digital assistant, a kiosk, or an audio player, for example. In one embodiment, the exemplary fitness analysis system 100 includes a central processing unit (“CPU”) 105, which may include a conventional microprocessor. The fitness analysis system 100 further includes a memory 130, such as random access memory (“RAM”) for temporary storage of information and a read only memory (“ROM”) for permanent storage of information, and a mass storage device 120, such as a hard drive, diskette, or optical media storage device. Typically, the modules of the fitness analysis system 100 are connected to the computer using a standard based bus system. In different embodiments, the standard based bus system could be Peripheral Component Interconnect (“PCI”), Microchannel, Small Computer System Interface (“SCSI”), Industrial Standard Architecture (“ISA”) and Extended ISA (“EISA”) architectures, for example. In addition, the functionality provided for in the components and modules of fitness analysis system 100 may be combined into fewer components and modules or further separated into additional components and modules.

The fitness analysis system 100 is generally controlled and coordinated by operating system software, such as Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Vista, Windows 7, Windows 8, Unix, Linux, SunOS, Solaris, Maemeo, MeeGo, BlackBerry Tablet OS, Android, webOS, Sugar, Symbian OS, MAC OS X, iOS or other operating system(s). In Macintosh systems, the operating system may be any available operating system, such as MAC OS X. In other embodiments, the fitness analysis system 100 may be controlled by a proprietary operating system. Conventional operating systems control and schedule computer processes for execution, perform memory management, provide file system, networking, I/O services, and provide a user interface, such as a graphical user interface (“GUI”), among other things.

The fitness analysis system 100 includes one or more commonly available input/output (I/O) devices and interfaces 110, such as a keyboard, mouse, touchpad, and printer. In one embodiment, the I/O devices and interfaces 110 include one or more display device, such as a monitor, that allows the visual presentation of data to a user. More particularly, a display device provides for the presentation of GUIs, application software data, and multimedia presentations, for example. The fitness analysis system 100 may also include one or more multimedia devices 140, such as speakers, video cards, graphics accelerators, and microphones, for example.

In the embodiment of FIG. 1, the I/O devices and interfaces 110 provide a communication interface to various external devices. In the embodiment of FIG. 1, the fitness analysis system 100 is electronically coupled to a network 160, which comprises one or more of a LAN, WAN, the Internet, or cloud computing, for example, via a wired, wireless, or combination of wired and wireless, communication link 115. The network 160 communicates with various computing devices and/or other electronic devices via wired or wireless communication links.

According to FIG. 1, information may be provided to fitness analysis system 100 over the network 160 from one or more data sources including, for example, data source(s) 162. In addition, the data sources may include one or more internal and/or external data sources. In some embodiments, one or more of the databases or data sources may be implemented using a relational database, such as Sybase, Oracle, CodeBase and Microsoft® SQL Server as well as other types of databases such as, for example, a flat file database, an entity-relationship database, and object-oriented database, and/or a record-based database. In addition to supplying data, a client 164 may request information from the fitness analysis system 100.

In the embodiment of FIG. 1, the fitness analysis system 100 also includes an analysis and report module 150, which may be executed by the CPU 105. This module may include, by way of example, components, such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays, and variables.

In the embodiment shown in FIG. 1, the fitness analysis system 100 is configured to execute the analysis and report module 150, among others, in order to implement various aspects of the present disclosure, as described above. In some embodiments, the analysis and report module 150 may be configured to obtain data from data source(s) 162, which may include fitness data, user information, rule sets, various exercise information and/or other information. In some embodiments, the analysis and report module 150 may be further configured to generate fitness scores and/or reports based on various retrieved or retrieved fitness data, as further described below.

FIG. 2 is an illustrative user interface generated at least in part by the fitness analysis system 100 that includes a graphical representation of an overall fitness level 204 and category-based fitness scores for a user. The illustrative user interface includes a fitness level report 202 for a specific user that requested to view the report. This report may be considered, in some embodiments, to provide a main overview of an individual's overall fitness. It may be represented as a single overall metric or score, with supporting metrics or scores describing a predefined set of dimensions of fitness. The overall fitness level metric or score 204, in some embodiments, may be considered to provide an estimate of a person's overall fitness level. In one embodiment, it is a number from 1-100, where a higher number represents a better overall fitness level than a lower number. As illustrated, the user's determined overall fitness score is indicated as being 77. Other embodiments may use letters, combinations of letters and number and/or symbols to represent a metric or score. Animals may alternatively or additionally be used, such as a different animal being assigned to various fitness levels. For example, the fitness analysis system may calculate a score for an individual, then assign the individual to an animal designation that is associated with a range of score values into which the individual's score falls.

In one embodiment, the fitness level metric or score 204 is determined by the fitness analysis system using a weighted average calculated based on the levels from eight different categories. These categories are indicated in the illustrative user interface as powerlifts, Olympic lifts, speed, endurance, bodyweight, light, heavy and long. The fitness analysis system may consider a user's performance with respect to one or more workouts in each category that are considered in calculating the level or score for that category. For each workout that a person has completed in a given category, the fitness analysis system may have determined a score or level. In some embodiments, the level may be roughly equivalent to a percentile, and may be determined at least in part by comparing the individual's score to a number of other individuals' scores. These individual workout levels may be averaged to produce a category level, such as the illustrated category level or score of 56 determined for the powerlifts category. In the illustrated embodiment, the eight category levels may then have been averaged, such as by giving equal weight to each category, to produce the overall fitness level 204. In other embodiments, one category may be weighted more heavily than another.

Information contributing to the powerlifts level or score may include, for example, a user's heaviest weight lifted for one repetition of deadlift, back squat, bench press, and/or overhead press. Information contributing to the Olympic lifts level or score may include, for example, a user's heaviest weight lifted for one repetition of snatch, clean, and/or jerk. Information contributing to the speed level or score may include, for example, a user's fastest times for outdoor running and/or indoor running machine distances from 100 meters through 1000 meters. Information contributing to the endurance level or score may include, for example, a user's fastest times for outdoor running and/or indoor running machine distances from 1000 meters through 10,000 or more meters. In some embodiments, only workout information from a certain time period may be considered (such as the last month, the last three months, or some other period).

Information contributing to the bodyweight conditioning workouts level or score may include, according to one embodiment, workouts generally lasting under 20 minutes that contain only bodyweight movements and no weighted movements. Examples bodyweight movements include pull-ups, push-ups, sit-ups and un-weighted squats. An example workout may be a timed workout including a 500 meter row, 40 air squats, 30 sit-ups, 20 push-ups and 10 pull-ups. Light conditioning workouts, in one embodiment, may generally be workouts lasting under 20 minutes that contain weighted movements, with average to light weights. An example workout may include completing as many rounds as possible in 15 minutes of the following: 9 deadlifts of 155 pounds (which may be a relatively light weight based on population-wide data), 12 push-ups and 15 box jumps at a 24 inch height. A heavy conditioning workout, in one embodiment, may be a workout generally lasting under 20 minutes that contains weighted movements, with heavier than average weights. An example workout may include 5 timed rounds including 5 deadlifts of 275/185 pounds and 10 burpees. Long conditioning workouts may be, in one embodiment, workouts generally lasting over 20 minutes that may contain bodyweight movements and may contain heavy or light weighted movements. An example workout may include 5 timed rounds including an 800 meter run, 30 kettlebell swings and 30 pull-ups. Workouts may be automatically categorized by the fitness analysis system by applying retrieved rule sets, as further described below.

In some embodiments, the fitness analysis system may generate and/or present for display one or more user interfaces that graphically display one or more of the category levels as bars on a bar chart, with a horizontal line at the overall fitness level, as illustrated in FIG. 2. Category levels below the fitness level may be identified as weaknesses, while category levels above the fitness level may be identified as strengths (potentially taking into account certain minimum thresholds or other information), as further discussed below. The fitness analysis system may present generated fitness reports and/or scores for viewing by a user in various forms. For example, the structured data and/or other aspects of a fitness report may be presented to a user via a generated user interface presented for display on a user's computing device. In some embodiments, a fitness report may be generated for display in association with a web page presented for display by a browser operating on a user's computing device, a software application executed by a mobile device or other computing device, email, printed documents and/or digitally stored documents. In some embodiments, the styling of charts or the formatting of text and tables within a report may be different depending on the output medium, such as whether presented within a user interface presented by a browser or within a mobile device application. Different presentation adapters may be used by the fitness analysis system to format the reports for these different interfaces.

In some embodiments, interfaces may either be a push or a pull type. For example, a push type interface may be one in which the fitness analysis system sends (or provides access to) a fitness report (formatted for the interface) to an end user without a direct user request for data, such as by email. In contrast, a pull type interface may be one in which a user requests that the fitness analysis system generate and/or deliver a report, such as by the user requesting one or more pages or other user interfaces. In either case, in some embodiments, the formatted fitness reports and/or score displays may be pre-generated and stored in a data store to be ready for access or delivery. Alternatively, in some embodiments, the formatted fitness reports and/or scores may be generated on demand when the report is to be sent to the user or is requested by the user.

FIG. 3 is an illustrative user interface generated at least in part by the fitness analysis system 100 that enables a user to enter workout information to be analyzed by the fitness analysis system. It will be understood that the illustrative user interface is one example of a data entry method for fitness data, and that a variety of other methods may be used in other embodiments, including automated data retrieval, crawling and/or batch processes. FIG. 3 provides one example of a user interface that enables a user to enter the workouts that he performs or performed, including movements, weights, repetitions, distances, and/or times relevant to the workout(s). As illustrated, the user may select the number of workout rounds, the various selectable movements included, a total time and other notes. The user in the illustrated example has selected options and entered data to create a workout including five rounds of 800 meter runs, 30 kettleball swings of 2 pood, and 30 pull-ups.

As will be further discussed below, once the user has submitted his workout information for one or more workouts, the fitness analysis system may then compare the results of entered workouts against a number of the system's other users, which may include all users throughout the world or a subset of the users based on user similarities, geography or other user attributes. From this data, in some embodiments, the system may calculate a level or score, such as a number from 0-100, for the workout result. Members who perform the workout with modified repetitions or weights may be placed below those who performed the workout as prescribed (without modification) when calculating the level. In some embodiments, detailed meal information may be stored based on user input and/or analyzed, in some embodiments. Additionally or alternatively, weigh-ins with body fat estimates may be determined based at least in part on data entered into a user interface and may be used in determining one or more levels or scores. In some embodiments, daily lifestyle summary questions may be used to track trends in common items that may have an effect on workout performance and progress. Users' answers may be compared to other respondents, and daily points may be awarded for positive answers, which may depend on the importance of the different items according to one or more rule sets.

Importing user data and processing such data may include, in some embodiments, feature extraction and feature evaluation implemented by the fitness analysis system 100. A feature, in some embodiments, may refer to an individual observable property of raw data. In some embodiments, features may be determined by applying one or more extract-transform processes based at least in part on received or retrieved raw data. Raw data, in some embodiments, may be stored in one or more data stores as (1) an individual performs a data entry step (for him/herself or for another), (2) an automated data discovery process (such as a batch process), and/or (3) data generated by the fitness analysis system itself as final output and/or as intermediate data.

In some embodiments, automated data discovery techniques may include web crawling, social media integration, interpreting smart device data, and/or direct access to external services. In some embodiments, the fitness analysis system 100 may initially collect raw data (such as workouts performed, weigh-ins, and/or other activities such as yoga or stretching). Example data import techniques and/or sources for collecting raw data may include, without limitation, user-submitted data, RSS importation, social network data, blogging or micro-blogging service import or analysis, smart device data importation (such as fitness tracking devices), proprietary adapters and/or others. Raw data may be either structured or unstructured data, in some embodiments. In some embodiments, features extracted or determined from raw data may be considered structured data, which may also include additional attributes and/or other metadata. Such features may be stored as a single numerical value, a string, and/or another data structure or type.

In some embodiments, the fitness analysis system may implement a batch processing technique (such as MapReduce or batched background jobs) to process large quantities of data. In these embodiments, the system may extract features, import data and/or create fitness reports as batches. A batch processing technique, according to one embodiment, may include task queues and workers to perform the given tasks. These workers may access data stores, data services (such as by utilizing remote procedural calls or request-reply messaging) and/or other queues to retrieve input and/or to store output. In some embodiments, a task generator may be a process that is executed at regularly timed intervals by the fitness analysis system to start work for a batch. In other embodiments, a task generator may be initiated on demand based at least in part on one or more user requests. For example, the task generator may queue a set of tasks for the workers to perform. In some embodiments, workers may run concurrently utilizing the same computing device and/or utilizing separate computing devices.

In some embodiments, the fitness analysis system may implement real time data processing for at least some aspects of the received or retrieved fitness data. In some such embodiments, a state may be changed when there is new data, updated data or deleted data. Once the state is changed, the updated state may propagate to subsequent processing steps to update relevant scores and/or reports. In some embodiments, the fitness analysis system may generate a directed graph or other representation of nodes to implement higher-level stages of the data processing method and/or report generation.

In one embodiment, one or more of the data importing and processing features and/or report generation features may be implemented using messaging technologies such as queues and/or publish-subscribe channels. This may allow for flexibility of running workers and queues in many configurations between shared machines, or their own machines. In one embodiment, a batch processor may be implemented as a multi-staged MapReduce process. In another embodiment, it may be implemented as a pool of worker processes taking tasks off a queue, which may allow for flexibility of machine usage based on computing requirements. In some embodiments, a real time processing module may be responsible for incremental updates that can be merged into batch-processed data for up to date data. The data it manages may be transient, in some embodiments, as batch processing may confirm its calculations or other processing within a batch processor snapshot stored in one or data stores, according to some embodiments. In some embodiments, temporary data may be stored in memory for speed, with only the most recent up to date information more permanently stored in one or more data stores.

FIG. 4 is a flow diagram of an illustrative method 400 implemented at least in part by the fitness analysis system 100 for generating one or more fitness scores for a user. The illustrative method may be implemented at least in part by the analysis and report module 150, in some embodiments. The illustrative method begins at block 402, where the fitness analysis system receives user data indicating performance of the user with respect to a plurality of workouts, where each workout may include a number of different movements. The workout data or information may be received or retrieved in a variety of manners from any of a variety of sources, as discussed above. For example, workout data may be retrieved from data source 162, received from client device 164 via a user interface or data import from an external device, and/or received or determined from one or more other data sources, such as crawling network-accessible sources to extract relevant data. The fitness analysis system may then process the workout data, if not previously processed, such that the information is in an efficient form for generating scores, reports and/or other information. Such processing may include, for example, feature extraction and analysis to transform raw data into structured data. For example, features extracted from raw data may include a movement or exercise included in a workout, weight used in a movement or exercise, time of a movement or workout, distance of a movement or workout, a number of repetitions or rounds completed, and/or other information.

At decisional block 404, the fitness analysis system 100 determines, for each workout being analyzed, whether the given workout has been assigned to a category. For example, a workout that has previously been completed by the given user or by other individuals may have been previously categorized by the fitness analysis system and/or manually categorized by one or more users or operators of the fitness analysis system. The fitness analysis system may determine if a given workout completed by the user has been previously categorized by searching one or more data stores for a matching workout and retrieving its assigned category designation. When a given workout has been previously assigned to a category, the illustrative method proceeds to block 408, skipping block 406 for the given workout. If, however, a given workout has not been previously assigned to a category, the illustrative method proceeds to block 406 for the given workout.

At block 406, the fitness analysis system 406 automatically assigns the workout to a category by analyzing attributes of the workout and/or attributes of each of one or more movements included in the workout. Attributes of a workout as a whole may include, for example, the time or duration of the workout (such as total time and/or time per round), number of repetitions (such as total repetitions and/or repetitions per round), weight (such as total weight, maximum and/or minimum weight used, and/or average weight used), distance (such as total distance, average distance, and/or distance per round), height (such as total height achieved, average height, and/or height per round), and/or the number of rounds of the workout completed. A round may be, for example, a set of movements performed per attempt of the workout, with the workout encompasses multiple rounds or set attempts. Attributes of individual movements within the workout may include, for example, the type of movement, the amount of weight used, the distance involved, the height involved, the amount of time the movement is performed, the movement modality (for example, a running movement may be considered to be monostructural), and/or the number of repetitions of the movement. A given workout may include multiple different movements of different types, such as a pull-up movement and a running movement. Accordingly, in some embodiments, determining a category for a given workout may include the fitness analysis system considering each of the movement types included in the workout to identify a category for the workout based on a rule set. As one example, a rule may indicate that a workout lasting less than 20 minutes (or some other defined threshold) and only including bodyweight movements and/or cardio movements is to be assigned to a “bodyweight” category. Another rule in the same embodiment may indicate that a workout lasting less than 20 minutes that contains a mixture of bodyweight, cardio and light weightlifting movements (e.g., under a predetermined weight threshold) are to be assigned to a “light” category.

At block 408, the fitness analysis system 100 determines an average performance of the user for each workout and/or for each category of workout over a specified time period. Block 408 may be optional, such that it is not performed in some embodiments of the illustrative method. In some embodiments in which block 408 is implemented, the fitness analysis system may determine a representative or average performance by the user for a given workout (such as determining the average time, weight and/or distance for each movement and/or each workout over a given period, such as six months), then determine a percentile for the user's average or weighted average across all users of the system or all users in a given demographic or other grouping. It will be appreciated that a number of different weighting schemes, statistical methods and/or other known methods for determining representative numbers and/or percentile determinations may be applied.

Next, at block 410, the fitness analysis system generates scores for the user for each of a plurality of fitness categories, where the score for each category is based at least in part on the received user data for workouts in the respective category. The score may be determined in a different manner for different categories, depending on the types of workouts, types of movements, weight amounts employed, distances involved and/or other information associated with a given category. For example, scores for one category may be based at least in part on how many rounds of a workout were completed by a user in a certain time frame, while scores for another category may be based at least in part on the time that the user took to complete a workout. In some embodiments, movement scores may be generated for specific movement groups. For example, one or more of a user's workouts may include two or more distinct deadlift movements, with the user's performance with respect to each deadlift movement being considered in determining a score for a deadlift movement group. In some embodiments, this block may include determining a relative level or score for the user based on the percentile of the user's score, such as by comparing the individual's score to a number of other individuals' scores. In some embodiments, a given workout may only be included in determining a category score and/or an overall fitness score once the workout reaches a predetermined threshold number of participants. For example, a workout that has only been completed by a small number of users may be deemed to have too small of a sample size to provide sufficient percentile determinations and may not be used in determining scores. Accordingly, the number of different workouts contributing to a given score may change over time as more workout data is received from users. This may include, for example, considering potentially hundreds of unique workouts each performed by one or more of thousands of different users.

At block 412, the fitness analysis system determines an overall fitness score for the user based on the various category scores generated above. In one embodiment, the overall level or score may be determined by calculating an average of the user's category scores. In other embodiments, additional percentile determinations may be made at block 412, such as considering the user's percentile among other users with respect to combinations of category-based scores. In some embodiments, a given gym, user or system operator may assign various weights to the different category scores to be applied when the fitness analysis system determines the overall fitness score. Once the overall fitness score has been determined, the illustrative method 400 ends at block 412. As will be appreciated, the generated category scores and/or overall score may then be provided to the user, stored in a data store and/or used in generating additional content, such as a report.

In some embodiments, the fitness analysis system may implement both batch and real-time processing for the workout information and derived or intermediate data determined from users' workout information. As a batch process, for example, the fitness analysis system may maintain one or more current statistic percentile tables for a given week or period across all users or a subset of users. For example, the statistics may include the workout sessions, intervals and/or lifts of that week, which may provide levels of popular and newly created workouts of that week. In some embodiments, the fitness analysis system may store pre-generated reports for each workout and/or each movement. In order to keep the pre-generated statistics tables current, the system may regenerate them daily, hourly or at another time interval based on workout posting activity, which may include real-time or near-real time updates.

FIG. 5 is an illustrative user interface generated at least in part by the fitness analysis system 100 that includes graphical indications of a user's fitness strengths and weaknesses determined based on an analysis of fitness data associated with the user. The fitness analysis system may determine strengths and/or weaknesses in various areas of health or fitness by comparing the scores or levels of various individual movements and/or workouts to each other. By identifying certain deviations in levels based on comparisons of different levels of the user, the system may determine potential weaknesses of the user, as well as determining the type(s) of weaknesses (e.g. a physical strength weakness, technique weakness, flexibility weakness, endurance weakness or other weakness type).

The user interface illustrated in FIG. 5 includes indications of various strengths and weaknesses determined by the fitness analysis system based on an automated analysis of a user's workout information. As illustrated by element 502, the fitness analysis system has determined that the “endurance” category is a relative strength for the user. As illustrated by element 504, the fitness analysis system has determined that the “squats” movement is a relative weakness for the user. As shown by element 506, the fitness analysis system has determined that more workout information is needed in order for the system to determine whether the user has any potential strength or weakness with respect to his jerk technique. As will be discussed in more detail below, the strengths and weaknesses may be determined based at least in part by identifying differences beyond a certain threshold between different scores or levels determined for different categories, movements and/or workouts of the user.

In one embodiment, a weakness may by identified based on the fitness analysis system identifying a difference of ten or more points or levels (or some other predefined threshold) between the highest and lowest level or score in a given category. It will be appreciated that strengths or weaknesses may be generated according to different rules and/or other level difference thresholds in other embodiments. In some embodiments, the fitness analysis system may provide an up to date (real time or near-real time) accounting of a user's strength and weaknesses. These strengths and weaknesses may be shown in graphs of fitness levels of individual, or groups of, element levels based on workout session, intervals and/or potential maxes. The system may support presentation of historical strengths and weaknesses, such as by storing historical data that is accessible by the user via one or more user interfaces and/or for use in generating historical graphs. The strength and weakness determinations, as well as score or level determinations, in some embodiments, may be considered an idempotent function over the relevant input data. In some embodiments, the fitness analysis system may implement one or more of the determinations discussed herein by implementing batch processing with incremental updates, such as Lambda Architecture.

FIG. 6 is a flow diagram of an illustrative method 600 implemented at least in part by the fitness analysis system 100 for determining a user's fitness strengths and/or weaknesses based on an analysis of fitness data associated with the user. The illustrative method may be implemented at least in part by the analysis and report module 150, in some embodiments, based on workout data retrieved from data source 162, received from client device 164 and/or received or determined from one or more other data sources. The illustrative method begins at block 602, where the fitness analysis system 100 determines scores for the user for each of a number of exercises, categories and/or fitness traits, which may be considered sub-scores for the purposes of illustrative method 600. The determined scores may be, for example, scores for specific movements and/or a combination of movements. Accordingly, a score may be determined for an exercise that is a subset of a larger workout, such that data from multiple workouts that included the given exercise and/or movement(s) may be considered in generating a given score at block 602. As one example, an overhead shoulder press may be considered both a movement and an exercise, in some embodiments. As another example, a one mile run may be considered an exercise consisting of the movement of running. Additionally or alternatively to generating one or more exercise scores at block 602, the fitness analysis system may generate a score relative to a fitness trait that is relevant to a variety of exercises or workouts. For example, an endurance score and/or speed score may be determined based on workout information associated with a variety of types, such as running workouts, circuit-type weightlifting workouts and/or others.

Next, at block 604, the fitness analysis system determines the overall fitness level of the user based at least in part on the determined scores and/or other fitness data associated with the user. This overall score may be determined using similar methods as those discussed above with respect to FIG. 4. In some embodiments, the overall score may be an overall score with respect to a specific aspect of fitness that encompasses multiple exercises, movements and/or workouts, but which is not a comprehensive score with respect to all aspects of fitness.

At block 606, the fitness analysis system analyzes the determined scores for specific exercises, categories or fitness traits (e.g., sub-scores) relative to the overall fitness level of the user to identify at least one outlier score. Alternatively or additionally, the fitness analysis system may compare sub-scores to each other (rather than, or in addition to, comparing each sub-score to the overall fitness level of the user). An outlier may be considered, in one embodiment, to be a sub-score that is a predetermined threshold number of points, levels or percentiles below or above the user's overall score, and/or a threshold number below or above one or more other sub-score(s) of the user (such as a category score).

Next, at block 608, the fitness analysis system compares a type of the outlier score to a type of one or more of the user's sub-scores that more closely match the overall fitness level of the user. For example, as will be discussed in more detail below with respect to FIG. 7, the fitness analysis system may determine that a user's score or level for the shoulder press exercise or movement is significantly lower (e.g., differs by more than a set threshold amount, such as ten points) than both the user's overall level and the user's push press level. At block 610, the fitness analysis system determines a potential cause of the outlier(s) by applying one or more rule sets based at least in part on the type comparison(s) performed at block 608. For example, one rule set may classify a first exercise as being more technique-based and a second exercise as being more physical strength-based, such that the system may determine that a user with a relatively low level for the first exercise and a high or expected level for the second exercise (such as an exercise-specific level generally matching the user's overall fitness level or percentile) likely has a technique weakness with respect to the given category, exercise or movement. Additional examples of rules and their applications are discussed below with reference to FIGS. 7 and 8. Next, at block 612, the fitness analysis system generates a user interface identifying one or more potential strengths and/or weaknesses of the user based at least in part on the above determinations, as further discussed below. The illustrative method 600 ends at block 614.

FIG. 7 is an illustrative user interface generated at least in part by the fitness analysis system 100 that includes fitness score information and indications of a potential issue identified with respect to aspects of a user's fitness. As illustrated in overhead graph 702 (which may represent a graph of sub-scores or sub-levels within the overhead category, which itself may be a subset of a larger category), the user has an overall overhead score or overhead level of 89. As further illustrated, the user has a shoulder press score or level of 77, a push press score or level of 92, and a jerk score or level of 98. As illustrated in analysis indication 704, the fitness analysis system has determined that the user has a potential strength issue with respect to the overhead category. The fitness analysis system may have determined the potential strength issue based at least in part on a stored rule set indicating that a lower shoulder press level relative to the overall overhead level and/or relative to the jerk level may indicate a strength issue. The fitness analysis system may be configured, in some embodiments, to determine and/or adjust rule sets based on input of a system operator, machine learning and/or other automated methods.

FIG. 8 is an illustrative user interface generated at least in part by the fitness analysis system 100 that includes fitness score information and indication of a potential issue identified with respect to aspects of the user's fitness. As illustrated in graph 802, the fitness analysis system has determined that the user has on overall Olympic lifting technique score or level of 92, with various exercise sub-scores also graphically presented. As illustrated in analysis indication 804, the fitness analysis system has determined, based on an automated analysis of the user's workout performance, that the user may have above average technique for his strength level. The fitness analysis system may have determined the information presented in indication 804 based at least in part by applying one or more rule sets associated with the Olympic lifting technique category. For example, a stored rule may indicate that if the user's Olympic lift level is lower then the associated squat level, that may indicate a possible technique or mobility issue. Conversely, a rule may indicate that if a user's squat level is lower, that may indicate that a user has above average technique for his strength level.

FIG. 9 is an illustrative user interface generated at least in part by the fitness analysis system 100 that includes a graphical representation tracking a user's fitness level over time. As illustrated in graphical representation 902, the fitness analysis system has determined, stored and analyzed overall fitness level or score information for the user over a period of multiple years based on workout information received from the user over the given time period. As further illustrated, the fitness analysis system has assigned different identifiers (in this case animal names) to different level ranges. For example, the user's current level of 77 places the user in the “Griffin” level range. Accordingly, the user may be motivated to progress to higher levels and may track his progress in doing so. As will be appreciated, in embodiments in which the level or score is based on percentiles across a large number of users, the user is competing not just relative to his own historical workout performances (e.g., improving his previous performances and personal bests), but also with the population as a whole, as other users' performances affect his percentile score.

It is to be understood that not necessarily all objects or advantages may be achieved in accordance with any particular embodiment described herein. Thus, for example, those skilled in the art will recognize that certain embodiments may be configured to operate in a manner that achieves or optimizes one advantage or group of advantages as taught herein without necessarily achieving other objects or advantages as may be taught or suggested herein.

All of the processes described herein may be embodied in, and fully automated via, software code modules executed by a computing system that includes one or more general purpose computers or processors. The code modules may be stored in any type of non-transitory computer-readable medium or other computer storage device. Some or all the methods may alternatively be embodied in specialized computer hardware. In addition, the components referred to herein may be implemented in hardware, software, firmware or a combination thereof.

Many other variations than those described herein will be apparent from this disclosure. For example, depending on the embodiment, certain acts, events, or functions of any of the algorithms described herein can be performed in a different sequence, can be added, merged, or left out altogether (e.g., not all described acts or events are necessary for the practice of the algorithms). Moreover, in certain embodiments, acts or events can be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors or processor cores or on other parallel architectures, rather than sequentially. In addition, different tasks or processes can be performed by different machines and/or computing systems that can function together.

The various illustrative logical blocks, modules, and algorithm elements described in connection with the embodiments disclosed herein can be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, and elements have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. The described functionality can be implemented in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the disclosure.

The various illustrative logical blocks and modules described in connection with the embodiments disclosed herein can be implemented or performed by a machine, such as a processing unit or processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A processor can be a microprocessor, but in the alternative, the processor can be a controller, microcontroller, or state machine, combinations of the same, or the like. A processor can include electrical circuitry configured to process computer-executable instructions. In another embodiment, a processor includes an FPGA or other programmable device that performs logic operations without processing computer-executable instructions. A processor can also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Although described herein primarily with respect to digital technology, a processor may also include primarily analog components. For example, some or all of the signal processing algorithms described herein may be implemented in analog circuitry or mixed analog and digital circuitry. A computing environment can include any type of computer system, including, but not limited to, a computer system based on a microprocessor, a mainframe computer, a digital signal processor, a portable computing device, a device controller, or a computational engine within an appliance, to name a few.

The elements of a method, process, or algorithm described in connection with the embodiments disclosed herein can be embodied directly in hardware, in a software module stored in one or more memory devices and executed by one or more processors, or in a combination of the two. A software module can reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of non-transitory computer-readable storage medium, media, or physical computer storage known in the art. An example storage medium can be coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium can be integral to the processor. The storage medium can be volatile or nonvolatile. The processor and the storage medium can reside in an ASIC. The ASIC can reside in a user terminal. In the alternative, the processor and the storage medium can reside as discrete components in a user terminal.

Conditional language such as, among others, “can,” “could,” “might” or “may,” unless specifically stated otherwise, are otherwise understood within the context as used in general to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without user input or prompting, whether these features, elements and/or steps are included or are to be performed in any particular embodiment.

Disjunctive language such as the phrase “at least one of X, Y or Z,” unless specifically stated otherwise, is otherwise understood with the context as used in general to present that an item, term, etc., may be either X, Y, or Z, or any combination thereof (e.g., X, Y, and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of Z to each be present.

Any process descriptions, elements or blocks in the flow diagrams described herein and/or depicted in the attached figures should be understood as potentially representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or elements in the process. Alternate implementations are included within the scope of the embodiments described herein in which elements or functions may be deleted, executed out of order from that shown, or discussed, including substantially concurrently or in reverse order, depending on the functionality involved as would be understood by those skilled in the art.

Unless otherwise explicitly stated, articles such as “a” or “an” should generally be interpreted to include one or more described items. Accordingly, phrases such as “a device configured to” are intended to include one or more recited devices. Such one or more recited devices can also be collectively configured to carry out the stated recitations. For example, “a processor configured to carry out recitations A, B and C” can include a first processor configured to carry out recitation A working in conjunction with a second processor configured to carry out recitations B and C.

It should be emphasized that many variations and modifications may be made to the above-described embodiments, the elements of which are to be understood as being among other acceptable examples. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims. 

What is claimed is:
 1. A system comprising: an electronic data store configured to store workout data indicating performance of each of a plurality of users with respect to each of a plurality of workouts, wherein information stored for each workout comprises information identifying a plurality of movements included in the workout; and a computing system comprising one or more hardware computing devices executing specific computer-executable instructions, said computing system in communication with the electronic data store, and configured to at least: retrieve, from the electronic data store, workout information associated with a user of the plurality of users, wherein the retrieved workout information indicates performance of the user with respect to each of a first plurality of workouts; automatically determine a fitness category to assign to at least one of the first plurality of workouts, wherein the fitness category is determined at least in part by analyzing (a) one or more attributes of the workout, and (b) one or more attributes of each of two or more movements included in the workout; generate a score for the user for each of a plurality of fitness categories, wherein the score for each fitness category is based at least in part on retrieved workout data for one or more workouts assigned by the computing system to the given fitness category; and determine an overall fitness score for the user based at least in part on the generated scores for each of the plurality of fitness categories.
 2. The system of claim 1, wherein the computing system is further configured to at least: determine an average performance of the user across multiple sessions of each of the first plurality of workouts over a predefined time period; wherein the score for each fitness category is based at least in part on the determined average performances.
 3. The system of claim 1, wherein the score for the user for each fitness category is based at least in part by determining a percentile of the user based on an analysis of workout information associated with each of at least a subset of the plurality of users.
 4. The system of claim 1, wherein the one or more attributes of the workout include at least one of: duration of the workout, or number of rounds of the workout completed.
 5. The system of claim 1, wherein the one or more attributes of at least one movement included in the workout include at least one of: type of movement, amount of weight used, distance, or number of repetitions.
 6. The system of claim 1, wherein the at least one of the first plurality of workouts includes movements of multiple types.
 7. The system of claim 6, wherein the fitness category to assign to the at least one of the first plurality of workouts is determined based at least in part by applying a rule set that considers each of the movement types included in the at least one of the first plurality of workouts.
 8. A computer-implemented method comprising: as implemented by one or more computing devices configured with specific executable instructions, electronically receiving workout data indicating performance of a user with respect to each of a plurality of workouts completed by the user, wherein the received workout data for at least a first workout of the plurality of workouts comprises information identifying two or more different movements included in the first workout; automatically determining a fitness category to assign to at least the first workout, wherein the fitness category is determined at least in part by analyzing one or more attributes of each of the two or more movements included in the first workout; generating a score for the user for each of a plurality of fitness categories, wherein the score for each fitness category is based at least in part by analyzing workout data received for one or more workouts assigned to the given fitness category; and determining an overall fitness score for the user based at least in part on the generated scores for each of the plurality of fitness categories.
 9. The computer-implemented method of claim 8, wherein the fitness category to assign to the first workout is further determined at least in part by comparing a time to complete the first workout to one or more time thresholds associated with different fitness categories.
 10. The computer-implemented method of claim 8, further comprising: generating a user interface that graphically presents the determined overall fitness score and two or more of the generated scores for the plurality of fitness categories.
 11. The computer-implemented method of claim 10, wherein the user interface includes a graphical representation comprising a line or marker indicating the overall fitness score and bars corresponding to each of the two or more of the generated scores for the plurality of fitness categories.
 12. The computer-implemented method of claim 8, wherein the retrieved workout data for each workout comprises at least one of time, weight or number of repetitions.
 13. The computer-implemented method of claim 8, wherein the overall fitness score for the user is determined based at least in part by considering workout information associated with hundreds of individuals.
 14. The computer-implemented method of claim 13, wherein the overall fitness score for the user is based at least in part on a determined percentile of the user with respect to the hundreds of individuals.
 15. The computer-implemented method of claim 8, wherein the one or more attributes of at least one movement included in the first workout include at least one of: type of movement, amount of weight used, distance, height or number of repetitions.
 16. A computer-readable, non-transitory storage medium storing computer executable instructions that, when executed by one or more computing devices, configure the one or more computing devices to perform operations comprising: electronically receiving workout data indicating performance of a user with respect to each of a plurality of workouts completed by the user, wherein the received workout data for at least a first workout of the plurality of workouts comprises information identifying one or more movements included in the first workout; automatically determining a fitness category to assign to at least the first workout, wherein the fitness category is determined at least in part by analyzing one or more attributes of each of the one or more movements included in the first workout; generating a score for the user for each of a plurality of fitness categories, wherein the score for each fitness category is based at least in part by analyzing workout data received for one or more workouts assigned to the given fitness category; and determining an overall fitness score for the user based at least in part on the generated scores for each of the plurality of fitness categories.
 17. The computer-readable, non-transitory storage medium of claim 16, wherein the operations further comprise generating a user interface that graphically presents the determined overall fitness score and two or more of the generated scores for the plurality of fitness categories.
 18. The computer-readable, non-transitory storage medium of claim 17, wherein the user interface includes a graphical representation comprising a line indicating the overall fitness score and bars corresponding to each of the two or more of the generated scores for the plurality of fitness categories. 